// 通过vue-router实现模板路由的配置
import { createRouter, createWebHistory } from 'vue-router'
import { constantRoute } from './routes'
import { ElMessage } from 'element-plus'
import useUserStore from '@/store/modules/user'

// 创建路由器
const router = createRouter({
  // 路由模式history
  history: createWebHistory(),
  routes: constantRoute,
  // 滚动行为
  scrollBehavior() {
    return {
      left: 0,
      top: 0,
    }
  },
})

// 全局前置守卫
router.beforeEach(async (to, from, next) => {
  // 获取token，判断用户登录状态
  const userStore = useUserStore()
  const token = userStore.token

  if (token) {
    // 已登录
    if (to.path === '/login') {
      // 已登录不能再访问登录页
      next({ path: '/home' })
    } else {
      // 去往其他路由，放行
      next()
    }
  } else {
    // 未登录
    if (to.path === '/login') {
      // 去往登录页，放行
      next()
    } else if (to.path.startsWith('/front') || to.path === '/') {
      // 去往前台页面，放行
      next()
    } else {
      // 去往其他页面，重定向到登录页
      ElMessage.error('请先登录')
      next({ path: '/login', query: { redirect: to.path } })
    }
  }
})

// 向外暴露
export default router
